package com.link2room.rodimus.facade;

import com.link2room.common.jpa.result.QueryResult;
import com.link2room.rodimus.dto.param.api.SalesmanApiParamDto;
import com.link2room.rodimus.dto.result.base.SalesmanBaseInfoDto;
import com.link2room.rodimus.dto.result.base.SalesmanIncomeDetailDto;
import com.link2room.rodimus.dto.result.base.SalesmanMemberDto;
import com.link2room.rodimus.entity.SalesmanBase;
import com.link2room.rodimus.entity.SalesmanIncomeDetail;
import com.link2room.rodimus.entity.SalesmanMember;
import com.link2room.jetfire.dto.param.base.ReservationParamDto;
import com.link2room.rodimus.dto.param.inside.SalesmanAwardMemberInsideParamDto;
import com.link2room.rodimus.dto.param.inside.SalesmanInComeDetailInsideParamDto;

/**
 * Created by VegetaKo on 2016/9/21.
 */
public interface ISalesmanApiFacadeService {
    void saveSalesman(SalesmanApiParamDto salesmanApiParamDto) throws Exception;

    void modifySalesman(SalesmanApiParamDto salesmanApiParamDto) throws Exception;

    SalesmanBase getSalesman(SalesmanApiParamDto salesmanApiParamDto) throws Exception;

    SalesmanBaseInfoDto getCurrentSalesmanBaseInfo(SalesmanApiParamDto salesmanApiParamDto) throws Exception;

    QueryResult<SalesmanIncomeDetailDto> getSalesmanIncomeDetails(SalesmanApiParamDto salesmanApiParamDto) throws Exception;

    QueryResult<SalesmanMemberDto> getSalesmanMembers(SalesmanApiParamDto salesmanApiParamDto) throws Exception;

    void saveSalesmanReservation(ReservationParamDto reservationParamDto) throws Exception;

    /**
     * 分销员订单奖励
     * @param salesmanInComeDetailInsideParamDto
     * @throws Exception
     */
    void awardSalesmanReservation(SalesmanInComeDetailInsideParamDto salesmanInComeDetailInsideParamDto) throws Exception;

    void awardSalesmanMember(SalesmanAwardMemberInsideParamDto salesmanAwardMemberInsideParamDto) throws Exception;
}
